﻿// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// This file is part of CodingEditor.
// Note:	This project is derived from Peter Project
//			(hosted on sourceforge and codeplex)
//
// Copyright (c) 2008-2009, CE Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


namespace CE.API
{
	using System.Text.RegularExpressions;

	public interface ICEPluginTab
	{
		#region Properties

		bool AbleToCopy
		{
			get;
		}

		bool AbleToCut
		{
			get;
		}

		bool AbleToDelete
		{
			get;
		}

		bool AbleToPaste
		{
			get;
		}

		bool AbleToRedo
		{
			get;
		}

		bool AbleToSave
		{
			get;
		}

		bool AbleToSelectAll
		{
			get;
		}

		bool AbleToUndo
		{
			get;
		}

		string FileName
		{
			get;
		}

		ICEPluginHost Host
		{
			get;
			set;
		}

		bool NeedsSaving
		{
			get;
		}

		string Selection
		{
			get;
		}

		string TabText
		{
			get;
			set;
		}

		#endregion Properties

		#region Methods

		void Copy();
		void Cut();
		void Delete();
		void Duplicate();
		void MarkAll(Regex reg);
		void Paste();
		void Print(bool showDialog);
		void Redo();
		void ReplaceAll(Regex reg, string replaceWith);
		void ReplaceNext(Regex reg, string replaceWith, bool searchUp);
		void Save();
		void SaveAs(string filePath);
		void SelectAll();
		void SelectWord(int line, int offset, int wordLeng);
		void Undo();

		bool FindNext(Regex reg, bool searchUp);
		bool CloseTab();

		#endregion Methods
	}
}